﻿/**
 * 上传面板。
 */
Ext.define('Happy.fileupload.Panel', {
    extend: 'Happy.form.Panel',
    alias: 'widget.happy-fileupload-panel',

    /**
     * @cfg。
     */
    fileFieldLabel: '本地文件',
    /**
     * @cfg。
     */
    fileFieldButtonText: '选择',
    /**
     * @cfg {String} uploadUrl。
     */
    /**
     * @cfg {String} uploadChildDirectory。
     */
    /**
     * @cfg。
     */
    uploadingTip: '文件上传中...',
    /**
     * @cfg。
     */
    fileType: 'link',
    /**
     * @readonly
     * @property 消息的标题。
     */
    FILE_TYPES: {
        'link': {
            url: '/ExtJsFileUpload/UploadLink',
            childDirectory: 'Links'
        },
        'image': {
            url: '/ExtJsFileUpload/UploadImage',
            childDirectory: 'Images'
        }
    },

    /**
     * @inheritdoc
     */
    configItems: function () {
        var me = this;

        me.items = [{
            xtype: 'filefield',
            name: 'File',
            fieldLabel: me.fileFieldLabel,
            allowBlank: false,
            anchor: '100%',
            buttonText: me.fileFieldButtonText
        }];
    },

    /**
     * @event fileuploaded
     *
     * @param {Happy.fileupload.Panel}
     * @param {Object}
     */

    /**
    * 上传文件。
    * 
    */
    upload: function (options) {
        var me = this;

        if (!me.isValid()) {
            return;
        }

        me.submit(Ext.applyIf(options || {}, {
            url: me.uploadUrl || me.FILE_TYPES[me.fileType].url,
            params: {
                childDirectory: Ext.encode(me.uploadChildDirectory || me.FILE_TYPES[me.fileType].childDirectory)
            },
            waitMsg: me.uploadingTip,
            success: function (_, opt) {
                me.fireEvent('fileuploaded', me, opt.result);
            }
        }));
    }
});